fix(kill-switch-cf): R2 orderBy + core fallback + ALERT_STATE KV#30
Merged
Conversation
…k, wire ALERT_STATE KV Deploy-time fixes found while shipping the worker: - r2StorageAdaptiveGroups was ordered by `sum_objectCount_DESC`, an invalid enum (objectCount/payloadSize are max-aggregated gauges). Harmless when R2 was its own try/catch'd query, but batching it into the core query made that one bad dataset fail the whole batch — taking DO/Worker/D1 down with it and flipping analyticsAuth to FAILING. Drop the orderBy (we iterate all buckets anyway). - Add per-dataset fallback for the core batch (mirrors the extended batch): on a non-auth failure, retry each core dataset individually so one quirk can't blind the rest. Only flip analyticsAuth=FAILING on a real auth error. - Make parseCore merge-safe (assign only datasets present) so the fallback path doesn't clobber sibling datasets. - Wire the ALERT_STATE KV binding (id) now that the namespace exists. Verified live: analyticsAuth OK, all datasets populated (DO/Worker/D1 + Workers AI + AI Gateway), fail-closed endpoints, KV cooldown active. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
mikeumus
added a commit
that referenced
this pull request
Jun 17, 2026
queryR2Usage ordered r2StorageAdaptiveGroups by `sum_objectCount_DESC`, an invalid enum (objectCount/payloadSize are max-aggregated gauges, not sums). The query errored every cycle, but the try/catch fell back to a bare bucket list — so R2 detailed metrics (ops, storage GB) have silently always been empty/zero, and R2 threshold violations could never fire. Same root cause as the worker fix in #30. Drop the orderBy (all returned buckets are iterated regardless of order). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Deploy-time follow-up to #29, found while shipping the worker to production.
orderBybug:r2StorageAdaptiveGroupswas ordered bysum_objectCount_DESC— an invalid enum (those fields are max-aggregated gauges). It was harmless when R2 was its own try/catch'd query, but batching it into the core query (docs(agent-guard): README feature section, packages table, architecture, OpenAPI #8) made that one bad dataset fail the whole batch, taking DO/Worker/D1 down with it and flippinganalyticsAuthto FAILING. Fix: drop theorderBy(we iterate all buckets regardless).analyticsAuth=FAILINGon a genuine auth error.parseCore: assigns only datasets present, so the fallback path doesn't clobber siblings.ALERT_STATEKV binding (namespace id) now that it exists.Verified live on
cloudflare-billing-kill-switch:analyticsAuth: OK, all datasets populated (DO/Worker/D1 + Workers AI + AI Gateway), fail-closed endpoints, KV cooldown active.🤖 Generated with Claude Code